package com.onpositive.notes.services;

import java.io.Serializable;
import java.util.List;
import java.util.Locale;
import java.util.Set;

import com.onpositive.notes.model.ITemplate;
import com.onpositive.notes.model.ITemplateModel;

@SuppressWarnings("rawtypes")
public interface ITemplateModelRegistry extends Serializable {

	Set<String> getAllTemplateKeys() ;
	
	Set<String> getAllTemplateKeys(Locale locale) ;
	
	Set<ITemplate> getTemplates(ITemplateModel<?> model) ;
	
	Set<ITemplate> getTemplates(String id) ;	
	
	List<ITemplateModel<?>> getAllModels() ;
	
	List<ITemplateModel<?>> getAllModels(Locale locale) ;
	
	ITemplateModel getModelById( String id ) ;
	
	List<ITemplateModel<?>> getModelsByKey( String key ) ;
	
	List<String> getModelsByFirstWord( String key ) ;
	
	Set<String> getStartingWords() ; 
	
	List<ITemplateModel<?>> getModelsByKey( String key, Locale locale ) ;	
}
